package leetcode_周赛._2022._202211;

import general_class.ListNode;

/**
 * 321 场周赛
 *
 * @author yezh
 * @date 2022/11/27 12:50
 */
public class _27 {

    /**
     * 6246. 追加字符以获得子序列
     * 算法：双指针
     * 贪心匹配
     */
    public int appendCharacters(String s, String t) {
        int t1 = 0, t2 = 0;
        for (; t1 < s.length() && t2 < t.length(); ++t1) if (s.charAt(t1) == t.charAt(t2)) ++t2;
        return t.length() - t2;
    }

    /**
     * 6247. 从链表中移除节点
     * 算法：链表 + 递归
     * 从后往前推, 维护一个最大值(当前节点右边的最大值
     * 当前节点小于最大值, 返回当前节点的下一个节点; 反之, 返回当前节点
     */
    private int max;

    public ListNode removeNodes(ListNode head) {
        if (head == null) return null;
        head.next = removeNodes(head.next);

        max = Math.max(max, head.val);
        if (head.val < max) return head.next;
        else return head;
    }

}
